This application generally relates to implementing scale testing of a device or devices under test based on one or more scenarios. In addition, this application generally relates to testing of pass-through devices based on one or more scenarios. The scenarios may be based on captured communications between one or more hosts.
Many computer hardware and/or software products (referred to herein as devices) are designed to operate despite challenging use conditions such as high interaction volumes, deliberate attacks, etc. Various testing methods are used to verify the ability of a device under test to withstand different use conditions. Scale or volume testing methods model and apply high interaction volume conditions to the device under test. Such methods typically involve presenting high levels of concurrent users, high numbers of active connections, high incoming/outgoing bandwidth use, etc., and monitoring the resultant behavior of the device under test.
Existing scale testing methods, however, lack efficiency, limiting the achievable interaction volume. Mutation testing methods generate and apply potential attacks on the device under test by generating mutated messages, presenting the mutated messages to the device under test, and monitoring responses from the device under test.
Further, many testing methods are premised on the ability to match messages presented to a device under test with responding messages received from the device under test. In a scale test, it is desirable to know how a device under test responds to a particular message source as the number of users, number of connections, bandwidth usage, etc., increases. In a mutation test, it is desirable to know which mutated messages presented to the device under test elicited correct responses and which elicited incorrect responses. Matching incoming messages and device under test responses, however, is very difficult when the device under test is a network address translation (NAT) device, a proxy device, or another device that does not maintain addressing information between incoming and outgoing messages.